package com.cskaoyan.javase._1extends._9override.exercise;

/**
 * 读程序题
 * @since 11:28
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Father fs = new Son();
        Son s = new Son();
        Father f = new Father();
    }
}

class Father {
    int num = 100;

    public int getNum() {
        return num;
    }

    public Father() {
        /*
        创建子类对象
            在父类构造器中调用getNum,会体现出子类的行为
            但是子类成员变量的赋值还没有开始,只有默认值
            (因为父类的构造器都正在执行,所有子类成员变量的赋值手段都没有开始)
            所以只要是创建子类对象,不管引用是什么,这里的输出都是0
        创建父类对象
            全程和子类没关系
            就输出父类num的显式赋值的值
            是100
         */
        System.out.println(getNum());
    }
}

class Son extends Father {
    int num = 200;

    /*@Override
    public int getNum() {
        return num;
    }*/

    public Son() {
    }
}
